package com.example.demo.mapper;


import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import com.example.demo.entity.Task;
import com.example.demo.dto.VersionStatisticsDTO;
import com.example.demo.dto.DepStatisticsDTO;
import com.example.demo.dto.AppStatisticsDTO;

import java.util.List;

@Mapper
public interface TaskMapper {

    // 插入任务
    int insert(Task task);

    // 根据 ID 查询
    Task selectById(@Param("id") Long id);

    // 分页查询任务列表
    List<Task> selectPage(@Param("offset") int offset, @Param("size") int size, @Param("status") String status, @Param("application") String application, @Param("department") String department);

    // 查询总数（用于分页）
    long count(@Param("status") String status, @Param("application") String application, @Param("department") String department);

    // 更新任务
    int update(Task task);

    // 删除任务（可选软删除）
    int deleteById(@Param("id") Long id);

    // 根据创建人查询真实姓名（用于 DTO 填充）
    String selectRealNameByUserName(@Param("username") String username);
    
    // 查询raw_data中version字段的不同值及其统计
    List<VersionStatisticsDTO> selectVersionStatistics();
    
    // 查询raw_data中dep字段的不同值及其统计
    List<DepStatisticsDTO> selectDepStatistics(@Param("version") String version);
    
    // 查询raw_data中app字段的不同值及其统计
    List<AppStatisticsDTO> selectAppStatistics(@Param("version") String version, @Param("department") String department);
}